Programmable logic devices (PLDs) exist as a well-known type of programmable integrated circuit (IC) that may be programmed by a user to perform specified logic functions. There are different types of programmable logic devices, such as programmable logic arrays (PLAs) and complex programmable logic devices (CPLDs). One type of programmable logic device, known as a field programmable gate array (FPGA), is very popular because of a superior combination of capacity, flexibility, time-to-market, and cost.
An FPGA typically includes an array of configurable logic blocks (CLBs) and programmable input/output blocks (IOBs). The CLBs and IOBs are interconnected by a programmable interconnect structure. An FPGA may also include various dedicated logic circuits, such as memories, digital clock managers (DCMs), and input/output (I/O) transceivers. Notably, an FPGA may include one or more embedded processors. The programmable logic of an FPGA (e.g., CLBs, IOBs, and interconnect structure) is typically programmed by loading a stream of configuration data (known as a bitstream) into internal configuration memory cells. The states of the configuration memory cells define how the CLBs, IOBs, interconnect structure, and other programmable logic are configured. Some FPGAs include support for run-time partial reconfiguration, which provides the ability to alter the behavior of portions of a circuit configured in an active FPGA. Partial reconfiguration is useful in systems that must support a wide range of optional behavior, only a subset of which is operational at any point in time.
Presently, configuration of an FPGA device is not unique for that device. That is, the configuration bitstream is not unique for a particular FPGA device. For example, the configuration bitstream does not account for the speed grade, device temperature range, process variations, or other types of characteristics specific to the particular FPGA device. The configuration bitstream also does not account for current environmental factors, such as the current temperature of the FPGA device or the current supply voltage being provided to the device. Such process and environmental characteristics affect the operation of circuitry in the FPGA device and may deleteriously affect a design configured in the device unless compensated. Accordingly, there exists a need in the art for a method and apparatus for device-specific configuration of a programmable integrated circuit, such as PLDs and FPGAs.